package com.oyjd.beauty.business.goods.service;

import java.io.File;
import java.util.List;

import com.oyjd.beauty.bean.vo.GoodsTypeVO;
import com.oyjd.beauty.bean.vo.GoodsVO;
import com.oyjd.beauty.business.goods.vo.GoodsVOEx;
import com.oyjd.beauty.fw.action.Page;

/**
 * 
 * 商品信息业务接口
 * 
 * @author <b>欧建东<br/>
 *         Email:oyjd@163.com</b>
 * @version 1.0
 */
public interface GoodsService {
	/**
	 * 获取商品信息列表数据
	 * 
	 * @param page
	 *            页面对象
	 * @return
	 */
	Page<GoodsVOEx> getList(Page<GoodsVOEx> page);

	/**
	 * 根据ID获取商品信息对象信息
	 * 
	 * @param id
	 *            ID
	 * @return
	 */
	GoodsVO getGoodsVO(String goodsId);

	/**
	 * 根据商品ID获取性格ID列表
	 * 
	 * @param goodsId
	 * @return
	 */
	List<String> getKid(String goodsId);

	/**
	 * 根据商品ID获取体型ID列表
	 * 
	 * @param goodsId
	 * @return
	 */
	List<String> getBody(String goodsId);

	/**
	 * 增加商品信息
	 * 
	 * @param goodsTypeId
	 *            商品类ID
	 * @param link
	 *            链接
	 * @param title
	 *            标题
	 * @param suggest
	 *            建议
	 * @param picName
	 *            图片名称
	 * @param picFile
	 *            图片文件
	 * @param kids
	 *            性格列表
	 * @param bodys
	 *            体型列表
	 * @param user
	 *            当前用户
	 */
	void add(String goodsTypeId, String link, String title, String suggest, String picName, File picFile, String[] kids, String[] bodys, String user) throws Exception;

	/**
	 * 修改商品信息
	 * 
	 * @param goodsId
	 *            商品ID
	 * @param goodsTypeId
	 *            商品类ID
	 * @param link
	 *            链接
	 * @param title
	 *            标题
	 * @param suggest
	 *            建议
	 * @param picName
	 *            图片名称
	 * @param picFile
	 *            图片文件
	 * @param kids
	 *            性格列表
	 * @param bodys
	 *            体型列表
	 * @param user
	 *            当前用户
	 */
	void edit(String goodsId, String goodsTypeId, String link, String title, String suggest, String picName, File picFile, String[] kids, String[] bodys, String user) throws Exception;

	/**
	 * 删除商品信息
	 * 
	 * @param ids
	 *            多个ID
	 * @param user
	 *            当前用户
	 * @return
	 */
	void remove(String[] ids, String user);

	/**
	 * 获取图片文件流
	 * 
	 * @param picName
	 * @return
	 */
	byte[] getSou(String picName) throws Exception;

	// =========================================================
	/**
	 * 获取大分类
	 * 
	 * @return
	 */
	List<GoodsTypeVO> getTopType();

	/**
	 * 交换资料的排序位置
	 * 
	 * @param id1
	 *            Id1 商品ID
	 * @param id2
	 *            Id2商品ID
	 * @param type
	 *            类型
	 */
	void exchangePos(String id1, String id2, String type);

	/**
	 * 将资料的排至首位
	 * 
	 * @param id
	 *            Id商品ID
	 * @param type
	 *            类型
	 */
	void moveFirst(String id, String type);

	/**
	 * 新增类型排序元素
	 * 
	 * @param ids商品ID
	 * @param souType
	 * @param type
	 */
	void addOrder(String[] ids, String type);

	/**
	 * 删除类型排序元素
	 * 
	 * @param ids商品ID
	 * @param souType
	 * @param type
	 */
	void removeOrder(String[] ids, String type);

	/**
	 * 获取分类排序的列表
	 * 
	 * @param page
	 * @param type
	 * @return
	 */
	Page<GoodsVOEx> getTypeList(Page<GoodsVOEx> page, String type);

	/**
	 * 获取差异的列表
	 * 
	 * @param page
	 * @param type
	 * @return
	 */
	Page<GoodsVOEx> getLeftList(Page<GoodsVOEx> page, String type);
}
